﻿#pragma warning(disable: 4996)
#pragma warning(disable: 6031)

/*
*/

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

typedef struct TContext_s
{
	int a;
	int b;
	int c;
}TContext;

TContext context;

void read_data(TContext* ctx)
{
	scanf("%d", &ctx->a);
	scanf("%d", &ctx->b);
	scanf("%d", &ctx->c);
}

int is_valid(TContext* ctx)
{
	if ((ctx->a + ctx->b > ctx->c) && (ctx->c + ctx->b > ctx->a) && (ctx->a + ctx->c > ctx->b))
		return 1;
	return 0;
}

void do_task(TContext* ctx)
{
	if (is_valid(ctx))
	{
		float s = (ctx->a + ctx->b + ctx->c) * 0.5;
		printf("area = %.2f; perimeter = %.2f\n", sqrt(s * (s - ctx->a) * (s - ctx->b) * (s - ctx->c)), s * 2);
	}
	else
		printf("These sides do not correspond to a valid triangle\n");
}

void solve(TContext* ctx)
{
	read_data(ctx);
	do_task(ctx);
}

int main()
{
	freopen("D:/Develop/GitRepos/MOOC/浙江大学/数据结构/201906/DataStructure/M2019秋C入门和进阶练习集/7-100.txt", "r", stdin);
	solve(&context);
	return 0;
}
